package com.shujia.day08;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Demo04List {
    public static void main(String[] args) {
        /*
            TODO List 接口的用法
                 有序集合（也称为序列 ）。 该界面的用户可以精确控制列表中每个元素的插入位置。
                        用户可以通过整数索引（列表中的位置）访问元素，并搜索列表中的元素。
                 通过下标的方式来维护存储的数据位置
         */
        List<Integer> integers = new ArrayList<>();
        // 对于集合Collection不能指定获取单个元素，但是由于List接口其特性已经确定，所以可以获取
        integers.add(3);
        integers.add(5);
        integers.add(6);
        integers.add(2);
        integers.add(1);
        integers.add(7);
        integers.add(8);
        integers.add(4);
        integers.add(9);

        System.out.println(integers.get(0)); // 1
//        System.out.println(integers[1]); // 1 => []获取数据只能通过数组
        System.out.println(integers.indexOf(4)); // 获取元素所在的下标位置
        integers.remove(1);
        System.out.println(integers);

        // set要求传入下标和元素
        integers.set(1,5);
        System.out.println(integers);


        // 遍历数据
        for (Integer integer : integers) {
            System.out.println("elem:"+integer);
        }

        for (int i = 0; i < integers.size(); i++) {
            System.out.println("index elem:"+integers.get(i));
        }

        integers.listIterator();
        integers.iterator();

        /*
            TODO 迭代器：
                 hasPrevious:查看指针上一个有没有数据
                 previous：将指针进行上移，并获取其中的数据
         */
        ListIterator<Integer> integerListIterator = integers.listIterator();
        while (integerListIterator.hasNext()){
            System.out.println(integerListIterator.next());
        }

        while (integerListIterator.hasPrevious()){
            System.out.println(integerListIterator.previous());
        }



    }
}
